package com.zm.oes.mapper;

import com.zm.oes.entity.PaperManage;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface PaperMapper {

    /**
     * 使用 @Select 注解标记，表示这是一个查询操作
     * 查询所有试卷管理信息
     * 返回类型为作业管理对象列表
     */
    @Select("select paperId, questionType,questionId from paper_manage")
    List<PaperManage> findAll();

    /**
     * 使用 @Select 注解标记，表示这是一个查询操作
     * 根据试卷ID查询试卷管理信息
     * 方法的参数为试卷ID，返回类型为试卷管理对象列表
     */
    @Select("select paperId, questionType,questionId from paper_manage where paperId = #{paperId}")
    List<PaperManage> findById(Integer paperId);

    /**
     * 使用 @Insert 注解标记，表示这是一个插入操作
     * 向试卷管理表中插入一条新的关联信息
     * 方法的参数为一个 PaperManage 对象，包含了待插入的关联信息
     * 返回类型为操作结果的整数
     */
    @Insert("insert into paper_manage(paperId,questionType,questionId) values " +
            "(#{paperId},#{questionType},#{questionId})")
    int add(PaperManage paperManage);

    /**
     * 使用 @Delete 注解标记，表示这是一个删除操作
     * 根据试卷ID、题目类型和题目ID删除对应的关联信息
     * 方法的参数为试卷ID、题目类型和题目ID
     * 没有返回类型，因为它是一个无返回值的方法
     */
    @Delete("delete from paper_manage where paperId = #{paperId} and questionType = #{type} and questionId = #{questionId}")
    void delete(@Param("paperId") String paperId, @Param("type") String type, @Param("questionId") String questionId);

    /**
     * 根据试卷id删除题目关联
     *
     * @param paperId 试卷id
     */
    @Delete("DELETE FROM paper_manage WHERE paperId = #{paperId}")
    void deleteByPaperId(@Param("paperId") Integer paperId);

}
